home *** CD-ROM | disk | FTP | other *** search
/ Input 64 / Input_64_87-08_1987_Verlag_Heinz_Weise_de.d64 / assembler 1 < prev    next >
Text File  |  2023-02-26  |  2KB  |  81 lines

  1. ;Joystick-Abfrage per USR()-Funktion
  2. ;_
  3. :usrvec = $311 ;USR()-Vektor
  4.  
  5. :toint  = $b1aa ;FAC in Integer wandeln
  6. :tofac  = $bc44 ;Integerzahl in FAC uebertragen
  7. :illq   = $b248 ;'ILLEGAL QUANTITY' ausgeben
  8.  
  9. :cia    = $dc00 ;fuer Port2. Port1 liegt bei $dd00
  10. :ddra   = cia+2 ;Datenrichtungsregister Port A
  11. :pra    = cia   ;Datenregister Port A
  12.  
  13.         org $801 ;Start am BASIC-Anfang
  14.  
  15. :next   w   basend ;Pointer auf Ende
  16. :linnum w   1987   ;Zeilennummer
  17. :sys    b   $9e    ;Token fuer SYS
  18. :adrs   b   "2070" ;Adresse im Klartext
  19. :linend b   0      ;Kennzeichen fuer Zeilenende
  20. :basend w   0      ;Kennzeichen fuer Programmende
  21.  
  22.         s   2070-*
  23.  
  24. :init   lda #<usrjoy ;USR()-Vektor auf eigene
  25.         sta usrvec   ;Routine verbiegen
  26.         lda #>usrjoy
  27.         sta usrvec+1
  28.  
  29.         lda #<new ;BASIC-Anfang hinter
  30.         sta $2b   ;Programm verlegen
  31.         lda #>new
  32.         sta $2c
  33.         jsr $a659 ;RESTORE
  34.         jmp $a7ae ;RUN
  35.  
  36. ;Hier beginnt die USR()-Routine
  37. ;_
  38. :usrjoy jsr toint ;FAC in Akku/Y
  39.         cmp #0    ;High-Byte = 0?
  40.         bne error ;sonst Fehler
  41.         sei       ;Tastatur abhaengen
  42.         ldx #%11100000 ;Joystick-Bits als Eingang
  43.         stx ddra
  44.         lda pra   ;Bitmuster fuer Joystick
  45.         ldx #%11111111 ;Port A komplett als
  46.         stx ddra  ;Ausgang (Original)
  47.         cli       ;Tastaturabfrage wieder zulassen
  48.         cpy #1    ;x-Richtung gefragt?
  49.         beq joyx
  50.         cpy #2    ;y-Richtung gefragt?
  51.         beq joyy
  52.         cpy #3    ;Feuer gefragt?
  53.         beq joybut
  54. :error  jmp illq  ;sonst Fehler
  55.  
  56. :joybut ora #$08  ;Feuer nie negativ
  57.         lsr       ;gefragte Bits in Carry
  58. :joyx   lsr
  59.         lsr
  60. :joyy   lsr
  61.         bcs plus
  62.         lda #$ff  ;Minus 1
  63.         tay
  64.         bne raus  ;springt immer
  65. :plus   lsr
  66.         bcs null
  67.         lda #0    ;Plus 1
  68.         ldy #1
  69.         bne raus
  70. :null   lda #0    ;Null
  71.         tay
  72. :raus   sta $62   ;fuer TOFAC
  73.         sty $63
  74.         ldx #$90  ;auch fuer TOFAC
  75.         lda #0    ;Flag fuer numerisches
  76.         sta $0d   ;Ergebnis
  77.         jmp tofac ;TOFAC endet mit RTS
  78.  
  79. :ende   b   0
  80. :new    w   0
  81.  
  82.